package com.streamax.app.cqbus.platform.socket.tcp.command

import android.util.Log
import com.streamax.app.cqbus.platform.ext.capture
import com.streamax.app.cqbus.platform.ext.toInt2
import com.streamax.app.cqbus.platform.ext.toInt4
import com.swallowsonny.convertextlibrary.toHexString

data class TcpResponse82(
        /**
         * 应答命令序列号
         */
        var resopnseSnNum: Int = 0,
        /**
         * 应答结果，0：成功，1：失败，2：拒绝，3：不支持，4：不存在
         */
        var result: Byte = 0,
        /**
         * 请求成功，返回此次下载的令牌标识
         */
        var mToken: Int = 0,
        /**
         * 文件大小
         */
        var fileSize: Int = 0,
        /**
         * 分包数量
         */
        var mPackCount: Int = 0,
        /**
         * 文件名称 此次下载的文件名称
         */
        var mFileName: String = ""
) {
    fun decode(buffer: ByteArray) : TcpResponse82 {
        var offset = 0
        resopnseSnNum = buffer.capture(offset, offset + 1).toInt2
        offset += 2
        //结果
        result = buffer[offset]
        offset += 1
        if (result.toInt() == 0x00) {//成功
            //令牌
//            mToken = buffer[offset].toInt().shl(24) + (buffer[offset + 1].toInt() shl 16) + (buffer[offset + 2].toInt() shl 8) + buffer[offset + 3].toInt()
            mToken = buffer.capture(offset,offset+3).toInt4
//            Log.e(javaClass.simpleName, "mToken:${mToken} token ${token} ", )
            offset += 4
            //文件大小
            fileSize = buffer.capture(offset, offset + 3).toInt4
            Log.e(javaClass.simpleName, "文件大小:$fileSize ", )
            offset += 4
            //分包数量
            mPackCount = buffer.capture(offset, offset + 1).toInt2
            Log.e(javaClass.simpleName, "分包数量:$mPackCount", )
            offset += 2
            //文件名称
            mFileName = buffer.capture(offset, buffer.size - 2).toString(charset("GB2312"))
        }
        return this
    }
}